C#中的Task.Delay()和Thread.Sleep()区别

您所在的位置:网站首页 net task thread C#中的Task.Delay()和Thread.Sleep()区别

C#中的Task.Delay()和Thread.Sleep()区别

2023-11-29 11:24| 来源: 网络整理| 查看: 265

C#中的Task.Delay()和Thread.Sleep()区别

一、简介

1.Thread.Sleep()是同步延迟,Task.Delay()是异步延迟。2.Thread.Sleep()会阻塞线程,Task.Delay()不会。3.Thread.Sleep()不能取消,Task.Delay()可以。4.Task.Delay()实质创建一个运行给定时间的任务,Thread.Sleep()使当前线程休眠给定时间。5.反编译Task.Delay(),基本上讲它就是个包裹在任务中的定时器。6.Task.Delay()和Thread.Sleep()最大的区别是Task.Delay()旨在异步运行,在同步代码中使用Task.Delay()是没有意义的;在异步代码中使用Thread.Sleep()是一个非常糟糕的主意。通常使用await关键字调用Task.Delay()。

二、代码案例

案例一:Thread.Sleep()和Task.Delay()比较

代码:

static void Main(string[] args) { //阻塞,出现CPU等待... Task.Factory.StartNew(delegate { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " ****** Start Sleep()******"); for (int i = 1; i { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " ======StartDelay()======"); for (int i =1; i { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + " ======Start Delay()======"); for (int i = 1; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3